#!/usr/bin/python
# _*_ coding: utf8 _*_
#Created: 2010. 7. 6.
'''
사용법:        a = CGetTraffic()

               #결과물 리스트: 
               print a.m_stFullText
               
               #트위터 전송 (데이터를 따로 쓰려면 결과물과 전송 부분을 분리 해야 함)
               a.SendTextToTwitter()


'''

##GLOBALS
g_TrafficUrl = 'http://www.smartway.seoul.kr/roadInfor/IncidentList.jsp?menu=%B5%B9%B9%DF%BB%F3%C8%B2%B9%D7%C5%EB%C1%A6%C1%A4%BA%B8'

##IMPORTS
import urllib2
from BeautifulSoup import BeautifulSoup
import MoPostTwitter
import re


class CGetTraffic():
    #Member
    m_listTrafficData = ''
    m_bool = ''
    m_stFullText = []
    
    #__init__
    def __init__(self):
        pass
        self.GetTrafficData()
    
    def GetTrafficData(self):
        global g_TrafficUrl
        
        try:
            stContents = urllib2.urlopen(g_TrafficUrl).read()
            self.m_bool = True
        except:
            self.m_bool = False
            return False
        
        soup = BeautifulSoup(stContents)
        soupResult = soup.findAll(valign="middle")
        
        #가져온 배열이 8개보다 작으면 (사고 내용이 없으면) 종료
        if len(soupResult) <8:
            self.m_bool = False
            return False

        #데이터 중 html TAG 제거
        rePt = re.compile(r'<.*?>')
        mylist = []
        for soupResultList in soupResult:
            a = rePt.sub('', str(soupResultList).decode('utf8'))
            mylist.append(a)

        #배열중 쓸데없는 앞부분 제거            
        del mylist[:7]
        
        #만들어진 배열을 멤버변수로 전환
        self.m_listTrafficData = mylist
        #for b in self.m_listTrafficData: print b + u''
        return True
      
   
    def SendTextToTwitter(self):
        pass
        #데이터가 이상하거나 배열 갯수가 안맞으면 스톱.
        if not self.m_bool:
            return False
                
        inRepeat = len(self.m_listTrafficData) / 6
        
        #트위터로 보낼 객체 생성
        objTwitter = MoPostTwitter.CPostTwitter()
        
        for i in range(inRepeat):
            #print self.StMakeText(self.m_listTrafficData[0:6])
            #self.m_stFullText.append(self.StMakeText(self.m_listTrafficData[0:6]))
            #위와 같은 형식으로 트위터로 쏴주면 될듯 함
            #print self.StMakeText(self.m_listTrafficData[0:6])
            try:
                pass
                objTwitter.WriteText(self.StMakeText(self.m_listTrafficData[0:6]))
            except:
                pass
                return False
            
            del self.m_listTrafficData[0:6]
        
        return True
        
        
    def StMakeText(self, a_listData):
        stResult = u"[SidWebApp] 현재 도로 상황 [" + a_listData[5] + \
                   u"] [" + a_listData[0] + \
                   u", " + a_listData[1] + \
                   u", " + a_listData[2] + \
                   u"] 내용:[" + a_listData[3] + \
                   u"] 통제:[" + a_listData[4] + \
                   u"]"
        return stResult
        


def main():
    pass
    run = CGetTraffic()
    run.SendTextToTwitter()
    
if __name__ == "__main__":
    main()
